//
//  Array.swift
//  CMKit
//
//  Created by travel on 2016/12/15.
//  Copyright © 2016年 covermedia. All rights reserved.
//

import Foundation


public extension Array {
    
    /// 返回 index 对应的值，该函数不会抛出异常
    ///
    /// - Parameter index:  大于0，返回正向，小于 0 返回反向
    public subscript (safe index: Int) -> Element? {
        get {
            let t = index >= 0 ? index : count + index
            return (t < count && t >= 0) ? self[t] : nil
        }
        set (value) {
            guard let v = value else {
                return
            }
            let t = index >= 0 ? index : count + index
            guard 0 <= t && t < count else {
                return
            }
            self[t] = v
        }
    }
}
